package xiongwei.jiang.service;

import org.ehcache.Cache;

/**
 * 缓存服务接口
 *
 * @author 天之蓝
 */
public interface EhcacheService {
    /**
     * 获取字符串缓存
     *
     * @param alias 缓存 alias
     * @return alias 缓存中的 key-value
     * @author 天之蓝
     */
    Cache<String, String> getStringCache(String alias);

    /**
     * 获取字符串缓存
     *
     * @param alias 缓存 alias
     * @param key   缓存 key
     * @return 缓存 value
     * @author 天之蓝
     */
    String getStringCache(String alias, String key);

    /**
     * 设置字符串缓存
     *
     * @param alias 缓存 alias
     * @param key   缓存 key
     * @param value 缓存 value
     * @return alias 缓存中的 key-value
     * @author 天之蓝
     */
    Cache<String, String> setStringCache(String alias, String key, String value);

    /**
     * 设置字符串缓存，指定过期时间（当 alias 已存在，再次指定 ttl 不生效）
     *
     * @param alias 缓存 alias
     * @param key   缓存 key
     * @param value 缓存 value
     * @param ttl   过期时间，单位：秒（0-永不过期）
     * @return alias 缓存中的 key-value
     * @author 天之蓝
     */
    Cache<String, String> setStringCache(String alias, String key, String value, Long ttl);

    /**
     * 删除 alias 缓存中的 key-value
     *
     * @param alias 缓存 alias
     * @return true-成功，false-失败
     * @author 天之蓝
     */
    boolean deleteCache(String alias);
}
